package com.wx.gof.pattern.creational.factorymethod;

/**
 * @ClassName Application
 * @Author wx
 * @Description
 * 定义:
 * 工厂方法模式是类的创建模式，又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂（Polymorphic Factory）模式。
 * 工厂方法模式的用意是定义一个创建产品对象的工厂接口，将实际创建工作推迟到子类中。
 * 描述:
 * 在工厂方法模式中，核心的工厂类不再负责所有的对象的创建，而是将具体创建的工作交给子类去做。这个核心类则摇身一变，
 * 成为了一个抽象工厂角色，仅负责给出具体工厂子类必须实现的接口，而不接触哪一个类应当被实例化这种细节。
 * 适应场景：
 * 1.创建对象需要大量重复的代码
 * 2.应用程序不依赖对象如何被创建、实现等细节
 * 优点:
 * 1.符合开闭原则，提高扩展性
 * 2.应用程序只需要关心对象对应的工厂，无须关心细节
 * 缺点:
 * 1.类的个数容易过多，增加复杂度
 * 理解:
 * 应用程序-工厂方法模式(适合产品等级设计,核心类为抽象工厂，具体创建对象的操作交给子类工厂)
 * @Date 2018-12-02
 */
public class Application {
    public static void main(String[] agrs){
        VideoFactory videoFactory = new PythonVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();

    }
}
